package com.bear.newsset.adapter;

import android.view.View;
import android.view.ViewGroup;

import androidx.annotation.NonNull;
import androidx.viewpager.widget.PagerAdapter;

import java.util.List;

/**
 * Pager适配器
 *
 * 需要用到适配器的组件及方法
 * @see androidx.viewpager.widget.PagerAdapter
 * @see androidx.viewpager.widget.ViewPager#setAdapter(PagerAdapter)
 *
 * 传入一个集合View，设置适配器后以实现多个View之间的滑动切换
 * @param <V>
 */
public class ViewPagerAdapter<V extends View> extends PagerAdapter {
    private List<V> list;
    public ViewPagerAdapter(List<V> list) {
        this.list = list;
    }

    /**
     * 添加页面
     * @param container     {@link ViewGroup}
     * @param position      下标
     * @return              当前下标的View
     */
    @NonNull
    @Override
    public Object instantiateItem(@NonNull ViewGroup container, int position) {
        View v = list.get(position);
        container.addView(v);
        return v;
    }

    /**
     * 删除页面
     * @param container     {@link ViewGroup}
     * @param position      下标
     * @param object        {@link Object}
     */
    @Override
    public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
        container.removeView(list.get(position));
    }

    /**
     * 页面数量
     * @return          页面数量
     */
    @Override
    public int getCount() {
        return list.size();
    }

    @Override
    public boolean isViewFromObject(@NonNull View view, @NonNull Object o) {
        return view == o;
    }
}
